
#ifndef  __DOUBLYLINKEDLIST_H__
#define  __DOUBLYLINKEDLIST_H__

//带头结点的双向链表的构造： 

typedef char ElemType;       //数据元素中数据的类型

typedef struct node     //双向链表 数据节点 
{
    ElemType data[128];          //数据域 --> 保存数据 
    struct node * next;     //指针域 --> 保存逻辑上的下一个
    struct node * prev;               // 保存逻辑上的前一个
} DNode ;

typedef struct List     //双向链表 头结点（管理结点）
{
    DNode * first;          //指向双向链表的第一个节点 
    DNode * last;           //指向双向链表的最后一个节点
    int  num;               //记录双向链表中的节点个数 
    // ...   
} DList ;


DList * create_list();

DList * insert_node( DList * list, DNode * pnew );

//打印链表 
void print_list( DList * list );
//销毁一条双向链表    
void destroy_list( DList * list );

#endif
